<!-- .\" $Id: papif_get_granularity.html,v 1.6.12.1 2006/11/02 21:25:23 terpstra Exp $ -->
<!-- .TH PAPI_get_opt 3 "October, 2006" "PAPI Programmer's Reference" "PAPI" -->
<HTML>
<HEAD>
<TITLE>
Manual Page - PAPI_get_opt(3)</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

<STYLE TYPE="text/css">

<!--

p

{font-family: Verdana, Helvetica, Arial, sans-serif}



.style

{font-family: Verdana, Helvetica, Arial, sans-serif}



td.navBar A:link

{color: #ddd8d2;

font-weight: bold;

text-decoration: none}



td.navBar A:visited

{color: #ccc9c5;

font-weight: bold;

text-decoration: none}



td.navBar A:hover

{color: #ffffff}



.navBar

{color: #77797c;

font-family: Verdana, Helvetica, Arial, sans-serif;

font-size:  11px;

text-transform: uppercase}



a:visited

{color: #50525f}



a:link

{color: #8b3409}



a:hover

{color: #660000}



a:active

{background-color: #b1afad}



.footerNote

{background-color: #ffffff;

background-image: url(../images/line.gif);

background-position: right top;

background-repeat: repeat-x;

color: #77797c;

font-family: Verdana, Helvetica, Arial, sans-serif;

font-size:  10px}



BODY

{font-family: Verdana, Helvetica, Arial, sans-serif}

-->

</STYLE> <SCRIPT LANGUAGE="JavaScript">

<!--

function MM_swapImgRestore() { //v3.0

  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

}



function MM_preloadimages() { //v3.0

  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

    var i,j=d.MM_p.length,a=MM_preloadimages.arguments; for(i=0; i<a.length; i++)

    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

}



function MM_findObj(n, d) { //v4.0

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && document.getElementById) x=document.getElementById(n); return x;

}



function MM_swapImage() { //v3.0

  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

}

//-->

</SCRIPT> 

</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">

<TABLE WIDTH="101%" BORDER="0" CELLSPACING="0" CELLPADDING="0">

<TR>

<TD VALIGN="top" HEIGHT="75">

<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0" HEIGHT="75">

<TR>

<TD BACKGROUND="../images/menubg95.jpg" HEIGHT="75">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="center" HEIGHT="75">

<TR VALIGN="bottom">

<TD WIDTH="760" ALIGN="center" HEIGHT="50" COLSPAN="2">

<IMG SRC="../images/headertop.jpg" WIDTH="760" HEIGHT="50"></TD>

</TR>

<TR>

<TD HEIGHT="10" ALIGN="center" VALIGN="top" BGCOLOR="#333333" WIDTH="135">

<IMG SRC="../images/logoleft.jpg" WIDTH="135" HEIGHT="25" VSPACE="0" HSPACE="0" ALIGN="left">

</TD>

<TD CLASS="navBar" HEIGHT="25" ALIGN="center" VALIGN="middle" BGCOLOR="#333333" NOWRAP WIDTH="625" BACKGROUND="../images/menubg.jpg">

<CENTER>

<A HREF="http://icl.cs.utk.edu/papi/">

PAPI HOME

</A>

</CENTER>

</TD>

</TR>

<TR>

<TD HEIGHT="10" ALIGN="center" VALIGN="top" BGCOLOR="FFFFFF" WIDTH="135">

<IMG SRC="../images/logobottom.jpg" WIDTH="135" HEIGHT="20" VSPACE="0" HSPACE="0" ALIGN="left">

</TD>

<TD CLASS="navBar" HEIGHT="10" ALIGN="center" VALIGN="bottom" BGCOLOR="FFFFFF" WIDTH="625">

<IMG SRC="../images/white.jpg" WIDTH="625" HEIGHT="20" VSPACE="0" HSPACE="0" ALIGN="left">

</TD>

</TR>

</TABLE>

</TD>

</TR>

</TABLE>

</TD>

</TR>

<TR>

<TD VALIGN="top">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="center" CLASS="style">

<TR>

<TD CLASS="STYLE">

<P>
<!-- .SH NAME -->
<A name=0>

     <H3>NAME</H3>

</A>
<BLOCKQUOTE>
 PAPI_get_opt - get PAPI library or event set options
<BR>
 PAPI_set_opt - set PAPI library or event set options
<BR>
 PAPIF_get_clockrate - get the clockrate (Fortran only)
<BR>
 PAPIF_get_domain - get the counting domain (Fortran only)
<BR>
 PAPIF_get_granularity - get the counting granularity (Fortran only)
<BR>
 PAPIF_get_preload - get the library preload setting (Fortran only)
<P>
<!-- .SH SYNOPSIS -->
</BLOCKQUOTE>
<A name=contents></A><H3>CONTENTS</H3></A>
<BLOCKQUOTE>
<A HREF=#1>Synopsis</A><BR>
<A HREF=#2>Description</A><BR>
<A HREF=#3>Arguments</A><BR>
<A HREF=#4>Options Table</A><BR>
<A HREF=#5>Return Values</A><BR>
<A HREF=#6>Errors</A><BR>
<A HREF=#7>Examples</A><BR>
<A HREF=#8>Bugs</A><BR>
<A HREF=#9>See Also</A><BR>
</BLOCKQUOTE>
<A name=10>

     <H3>SYNOPSIS</H3>

</A>
<BLOCKQUOTE>
<!-- .B C Interface -->
<B>C Interface</B> <!-- .nf -->
<PRE>
<!-- .B #include <papi.h> -->
<B>#include &lt;papi.h&gt;</B> 
<!-- .BI "int PAPI_get_opt(int " option ", PAPI_option_t *" ptr ");" -->
<B>int PAPI_get_opt(int </B><I>option</I><B>, PAPI_option_t *</B><I>ptr</I><B>);</B> 
<!-- .BI "int PAPI_set_opt(int " option ", PAPI_option_t *" ptr ");" -->
<B>int PAPI_set_opt(int </B><I>option</I><B>, PAPI_option_t *</B><I>ptr</I><B>);</B> 
<!-- .fi -->
</PRE>
<!-- .B Fortran Interface -->
<B>Fortran Interface</B> <!-- .nf -->
<PRE>
<!-- .B #include "fpapi.h" -->
<B>#include fpapi.h</B> 
<!-- .BI PAPIF_get_clockrate(C_INT\  clockrate ) -->
<B>PAPIF_get_clockrate(C_INT </B><I>clockrate</I><B>)</B> 
<!-- .BI PAPIF_get_domain(C_INT\  EventSet,\  C_INT\  domain,\  C_INT\  mode,\  C_INT\  check ) -->
<B>PAPIF_get_domain(C_INT </B><I>EventSet, </I><B>C_INT </B><I>domain, </I><B>C_INT </B><I>mode, </I><B>C_INT </B><I>check</I><B>)</B> 
<!-- .BI PAPIF_get_granularity(C_INT\  EventSet,\  C_INT\  granularity,\  C_INT\  mode,\  C_INT\  check ) -->
<B>PAPIF_get_granularity(C_INT </B><I>EventSet, </I><B>C_INT </B><I>granularity, </I><B>C_INT </B><I>mode, </I><B>C_INT </B><I>check</I><B>)</B> 
<!-- .BI PAPIF_get_preload(C_STRING\  preload,\  C_INT\  check ) -->
<B>PAPIF_get_preload(C_STRING </B><I>preload, </I><B>C_INT </B><I>check</I><B>)</B> 
<!-- .fi -->
</PRE>
<P>
<!-- .SH DESCRIPTION -->
</BLOCKQUOTE>
<A name=2>

     <H3>DESCRIPTION</H3>

</A>
<BLOCKQUOTE>
<!-- .B PAPI_get_opt() -->
<B>PAPI_get_opt()</B> and
<!-- .B PAPI_set_opt()  -->
<B>PAPI_set_opt()</B> query or change the options of the PAPI library or a specific event set
created by
<!-- .BR "PAPI_create_eventset" (3). -->
<A HREF="papi_create_eventset.html">PAPI_create_eventset (3)</A>.
The C interface for these functions passes a pointer to the
<!-- .I PAPI_option_t -->
<I>PAPI_option_t</I> structure. Not all options require or return information in this structure,
and not all options are implemented for both get and set.
<P>
The Fortran interface is a series of calls implementing various subsets of
the C interface. Not all options in C are available in Fortran.
<!-- .LP -->
<P>
<!-- .B NOTE: -->
<B>NOTE:</B> Some options, such as PAPI_DOMAIN and PAPI_MULTIPLEX, are also
available as separate entry points in both C and Fortran.
<!-- .LP -->
<P>
The reader is urged to see the example code in the PAPI distribution
for usage of PAPI_get_opt.  The file
<!-- .B papi.h  -->
<B>papi.h</B> contains definitions for the structures unioned in the 
<!-- .I PAPI_option_t -->
<I>PAPI_option_t</I> structure.
<P>
<P>
<!-- .SH ARGUMENTS -->
</BLOCKQUOTE>
<A name=3>

     <H3>ARGUMENTS</H3>

</A>
<BLOCKQUOTE>
<!-- .I option -->
<I>option</I> -- is an input parameter describing the course of action. Possible
values are defined in
<!-- .B papi.h -->
<B>papi.h</B> and briefly described in the table below. The Fortran calls are
implementations of specific options.
<!-- .LP -->
<P>
<!-- .I "ptr" -->
<I>ptr</I> -- is a pointer to a structure that acts as both an input and output parameter.
It is defined in
<!-- .B papi.h -->
<B>papi.h</B> and  below.
<!-- .LP -->
<P>
<!-- .I EventSet  -->
<I>EventSet</I> -- input; a reference to an EventSetInfo structure
<!-- .LP -->
<P>
<!-- .I clockrate -->
<I>clockrate</I> --  output; cycle time of this CPU in MHz; *may* be an estimate
generated at init time with a quick timing routine
<!-- .LP -->
<P>
<!-- .I domain -->
<I>domain</I> --  output; execution domain for which events are counted
<!-- .LP -->
<P>
<!-- .I granularity -->
<I>granularity</I> --  output; execution granularity for which events are counted
<!-- .LP -->
<P>
<!-- .I mode -->
<I>mode</I> --  input; determines if domain or granularity are default
or for the current event set
<!-- .LP -->
<P>
<!-- .I preload -->
<I>preload</I> --  output; environment variable string for preloading libraries
<P>
<!-- .SH OPTIONS TABLE -->
</BLOCKQUOTE>
<A name=4>

     <H3>OPTIONS TABLE</H3>

</A>
<BLOCKQUOTE>
<!-- .LP -->
<P>
<!-- .TS H -->
<P><BLOCKQUOTE><TABLE bgcolor=#E0E0E0 border=1 cellspacing=0 cellpadding=3>
<!-- allbox tab($); -->
<!-- cB cB -->
<!-- cI s -->
<!-- lB lw(45). -->
<TR valign=top>
<TD align=center><B>Predefined name</B></TD><TD align=center><B>Explanation</B></TD></TR>
<TR valign=top>
<TD align=center colspan=2><I>General information requests</I></TD></TR>
<TR valign=top>
<TD><B>PAPI_CLOCKRATE</B></TD><TD>Get clockrate in MHz.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_MAX_CPUS</B></TD><TD>Get number of CPUs.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_MAX_HWCTRS</B></TD><TD>Get number of counters.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_EXEINFO</B></TD><TD>Get Executable addresses for text/data/bss.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_HWINFO</B></TD><TD>Get information about the hardware.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_SHLIBINFO</B></TD><TD>Get shared library information used by the program.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_SUBSTRATEINFO</B></TD><TD>Get the PAPI features the substrate supports
</TD></TR>
<TR valign=top>
<TD><B>PAPI_LIB_VERSION</B></TD><TD>Get the full PAPI version of the library
</TD></TR>
<TR valign=top>
<TD><B>PAPI_PRELOAD</B></TD><TD>Get &#145;&#145;LD_PRELOAD&#146;&#146; environment equivalent.
</TD></TR>
<!-- cI s -->
<!-- lB lw(45). -->
<TR valign=top>
<TD align=center colspan=2><I>Defaults for the global library</I></TD></TR>
<TR valign=top>
<TD><B>PAPI_DEFDOM</B></TD><TD>Get/Set default counting domain for newly created event sets.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_DEFGRN</B></TD><TD>Get/Set default counting granularity.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_DEBUG</B></TD><TD>Get/Set the PAPI debug state and the debug handler. The available debug states are
defined in papi.h. The debug state is available in ptr-&gt;debug.level. The debug
handler is available in ptr-&gt;debug.handler. For information regarding the behavior
of the handler, please see the man page for PAPI_set_debug.
</TD></TR>
<!-- cI s -->
<!-- lB lw(45). -->
<TR valign=top>
<TD align=center colspan=2><I>Multiplexing control</I></TD></TR>
<TR valign=top>
<TD><B>PAPI_MULTIPLEX</B></TD><TD>Get/Set options for multiplexing.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_MAX_MPX_CTRS</B></TD><TD>Get maximum number of multiplexing counters.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_DEF_MPX_USEC</B></TD><TD>Get/Set the sampling time slice in microseconds for multiplexing.
</TD></TR>
<!-- cI s -->
<!-- lB lw(45). -->
<TR valign=top>
<TD align=center colspan=2><I>Manipulating individual event sets</I></TD></TR>
<TR valign=top>
<TD><B>PAPI_ATTACH</B></TD><TD>Get thread or process id to which event set is attached. Returns TRUE
if currently attached.
Set event set specified in ptr-&gt;ptr-&gt;attach.eventset
to be attached to thread or process id specified in
in ptr-&gt;attach.tid
</TD></TR>
<TR valign=top>
<TD><B>PAPI_DETACH</B></TD><TD>Get thread or process id to which event set is attached. Returns TRUE
if currently detached.
Set event set specified in ptr-&gt;ptr-&gt;attach.eventset
to be detached from any thread or process id.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_DOMAIN</B></TD><TD>Get/Set domain for a single event set. The event set is specified
in ptr-&gt;domain.eventset
</TD></TR>
<TR valign=top>
<TD><B>PAPI_GRANUL</B></TD><TD>Get/Set granularity for a single event set. The event set is specified
in ptr-&gt;granularity.eventset. Not implemented yet.
</TD></TR>
<!-- cI s -->
<!-- lB lw(45). -->
<TR valign=top>
<TD align=center colspan=2><I>Platform specific options</I></TD></TR>
<TR valign=top>
<TD><B>PAPI_DATA_ADDRESS</B></TD><TD>Set data address range to restrict event counting for event set specified
in ptr-&gt;addr.eventset. Starting and ending addresses are specified in
ptr-&gt;addr.start and ptr-&gt;addr.end, respectively. If exact addresses cannot
be instantiated, offsets are returned in ptr-&gt;addr.start_off and
ptr-&gt;addr.end_off. Currently implemented on Itanium only.
</TD></TR>
<TR valign=top>
<TD><B>PAPI_INSTR_ADDRESS</B></TD><TD>Set instruction address range as described above. Itanium only.
</TD></TR>
</TABLE></BLOCKQUOTE>
<P>
<!-- .LP -->
<P>
The
<!-- .BI option_t\ *  ptr -->
<B>option_t *</B><I>ptr</I> structure is defined in
<!-- .B papi.h -->
<B>papi.h</B> and looks something like the following example from the source tree.
Users should use the definition in
<!-- .B papi.h -->
<B>papi.h</B> which is in synch with the library used.
<!-- .LP -->
<P>
<!-- .nf -->
<PRE>
<!-- .if t .ft CW -->
<TT>typedef union {
  PAPI_preload_option_t preload;
  PAPI_debug_option_t debug;
  PAPI_granularity_option_t granularity;
  PAPI_granularity_option_t defgranularity;
  PAPI_domain_option_t domain;
  PAPI_domain_option_t defdomain;
  PAPI_attach_option_t attach;
  PAPI_multiplex_option_t multiplex;
  PAPI_hw_info_t *hw_info;
  PAPI_shlib_info_t *shlib_info;
  PAPI_exe_info_t *exe_info;
  PAPI_substrate_info_t *sub_info;
  PAPI_overflow_option_t ovf_info;
  PAPI_addr_range_option_t addr;
} PAPI_option_t;
<!-- .if t .ft P -->
</TT><!-- .fi -->
</PRE>
<P>
<!-- .SH RETURN VALUES -->
</BLOCKQUOTE>
<A name=5>

     <H3>RETURN VALUES</H3>

</A>
<BLOCKQUOTE>
On success, these functions return
<!-- .I "PAPI_OK." -->
<I>PAPI_OK.</I> On error, a non-zero error code is returned.
<P>
<!-- .SH ERRORS -->
</BLOCKQUOTE>
<A name=6>

     <H3>ERRORS</H3>

</A>
<BLOCKQUOTE>
<!-- .TP -->
<TABLE cellpadding=3>
<TR valign=top><TD colspan=2>
<!-- .B "PAPI_EINVAL" -->
<B>PAPI_EINVAL</B> </TD></TR><TR valign=top><TD width=6%>&nbsp;</TD><TD>
One or more of the arguments is invalid.
<!-- .TP -->
</TD></TR>
<TR valign=top><TD colspan=2>
<!-- .B "PAPI_ENOEVST" -->
<B>PAPI_ENOEVST</B> </TD></TR><TR valign=top><TD width=6%>&nbsp;</TD><TD>
The event set specified does not exist.
<!-- .TP -->
</TD></TR>
<TR valign=top><TD colspan=2>
<!-- .B "PAPI_EISRUN" -->
<B>PAPI_EISRUN</B> </TD></TR><TR valign=top><TD width=6%>&nbsp;</TD><TD>
The event set is currently counting events.
<P>
<!-- .SH EXAMPLES -->
</TD></TR>
<TR></TR></TABLE></BLOCKQUOTE>
<A name=7>

     <H3>EXAMPLES</H3>

</A>
<BLOCKQUOTE>
<!-- .LP -->
<P>
<!-- .nf -->
<PRE>
<!-- .if t .ft CW -->
<TT>PAPI_option_t options;
<P>
if ((num = PAPI_get_opt(PAPI_MAX_HWCTRS,NULL)) &lt;= 0)
  handle_error();
<P>
printf("This machine has %d counters.0,num);
<P>
/* Set the domain of this EventSet
   to counter user and kernel modes for this
   process */
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
memset(&options,0x0,sizeof(options));
options.domain.eventset = EventSet;
options.domain.domain = PAPI_DOM_ALL;
if (PAPI_set_opt(PAPI_DOMAIN, &options) != PAPI_OK)
  handle_error();
<!-- .if t .ft P -->
</TT><!-- .fi -->
</PRE>
<P>
<!-- .SH BUGS -->
</BLOCKQUOTE>
<A name=8>

     <H3>BUGS</H3>

</A>
<BLOCKQUOTE>
The granularity functions are not yet implemented.
The domain functions are only implemented on some platforms.
There are no known bugs in these functions.
<P>
<!-- .SH SEE ALSO -->
</BLOCKQUOTE>
<A name=9>

     <H3>SEE ALSO</H3>

</A>
<BLOCKQUOTE>
<!-- .BR PAPI_set_debug "(3)," PAPI_set_multiplex "(3)," PAPI_set_domain "(3)" -->
<A HREF="papi_set_debug.html">PAPI_set_debug (3)</A>,
<A HREF="papi_set_multiplex.html">PAPI_set_multiplex (3)</A>,
<A HREF="papi_set_domain.html">PAPI_set_domain (3)</A>
</BLOCKQUOTE>
<P><HR>
<TABLE width=100%><TR> <TD width=33%><I>PAPI Programmer&#146;s Reference</I></TD> <TD width=33% align=center>PAPI_get_opt (3)</TD> <TD align=right width=33%><I>October, 2006</I></TD> </TR></TABLE>
<HR SIZE="1">

</TD>

</TR>

</TABLE>

</TD>

</TR>

<TR>

<TD VALIGN="top">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="5" ALIGN="center">

<TR>

<TD>

</TD>

</TR>

<TR>

<TD HEIGHT="92">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="center" VSPACE="0" HSPACE="0">

<TR VALIGN="top">

<TD ALIGN="left" BACKGROUND="../images/stripes2.jpg" ROWSPAN="2">&nbsp;

 

</TD>

<TD ALIGN="right" HEIGHT="39" BACKGROUND="../images/stripes2.jpg" WIDTH="280">

<IMG SRC="../images/trans.gif" WIDTH="280" HEIGHT="63" VSPACE="0" HSPACE="0">

</TD>

<TD ALIGN="left" HEIGHT="63" WIDTH="200" BACKGROUND="../images/spinbg.jpg">

<A HREF="http://icl.cs.utk.edu/" ONMOUSEOUT="MM_swapImgRestore()" ONMOUSEOVER="MM_swapImage('Image10','','../images/spinlogo.gif',1)">

<IMG NAME="Image10" BORDER="0" SRC="../images/stable.gif" WIDTH="200" HEIGHT="63" HSPACE="0" VSPACE="0" ALIGN="left" ALT="Innovative Computing Laboratory">

</A>

</TD>

<TD ALIGN="left" HEIGHT="0" ROWSPAN="2" VALIGN="top" WIDTH="140">

<DIV ALIGN="left">

<IMG SRC="../images/trans.gif" WIDTH="140" HEIGHT="75" BORDER="0" ALIGN="left" VSPACE="0" HSPACE="0">

</DIV>

</TD>

<TD ALIGN="left" ROWSPAN="2" VALIGN="top" WIDTH="140">

<IMG SRC="../images/rd.jpg" WIDTH="140" HEIGHT="75" BORDER="0" ALIGN="right" VSPACE="0" HSPACE="0" ALT="2001 R&amp;D Winner">

</TD>

<TD ALIGN="right" ROWSPAN="3" VALIGN="top" BGCOLOR="#FFFFFF">&nbsp;

 

</TD>

</TR>

<TR VALIGN="top">

<TD ALIGN="center" HEIGHT="22" ROWSPAN="2" VALIGN="TOP">

<SPAN CLASS="FOOTERNOTE">

Contact PAPI: 

<A HREF="mailto:papi@cs.utk.edu">

papi@cs.utk.edu</A>

</SPAN>

</TD>

<TD ALIGN="center" HEIGHT="11" WIDTH="200">

<A HREF="http://www.cs.utk.edu/" ONMOUSEOUT="MM_swapImgRestore()" ONMOUSEOVER="MM_swapImage('Image11','','../images/cssigon.gif',1)">

<IMG NAME="Image11" BORDER="0" SRC="../images/cssigoff.gif" WIDTH="200" HEIGHT="11" ALIGN="left" HSPACE="0" VSPACE="0" ALT="Computer Science Department">

</A>

</TD>

</TR>

<TR VALIGN="top">

<TD ALIGN="left">&nbsp;

 

</TD>

<TD ALIGN="CENTER" HEIGHT="11" WIDTH="200" VALIGN="top">

<A HREF="http://www.utk.edu/" ONMOUSEOUT="MM_swapImgRestore()" ONMOUSEOVER="MM_swapImage('Image12','','../images/utsigon.gif',1)">

<IMG NAME="Image12" BORDER="0" SRC="../images/utsigoff.gif" WIDTH="200" HEIGHT="11" VSPACE="0" HSPACE="0" ALIGN="left" ALT="University of Tennessee">

</A>

</TD>

<TD ALIGN="left" HEIGHT="0" COLSPAN="2" VALIGN="top">&nbsp;

 

</TD>

</TR>

</TABLE>

</TD>

</TR>

</TABLE>

</TD>

</TR>

<TR>

<TD VALIGN="top">&nbsp;

 

</TD>

</TR>

</TABLE>

</BODY>

</HTML>

